using System;
using System.Collections.Generic;
using System.Transactions;

using PMServiceDesk.DataType;
using PMServiceDesk.DataAccess;

namespace PMServiceDesk.BusinessLogic
{
    public class TransicionEstadoLogic
    {
        #region Variables

        private TransicionEstadoData _transicionEstadoData;

        #endregion

        #region Constructores

        public TransicionEstadoLogic()
        {
            _transicionEstadoData = new TransicionEstadoData();
        }

        #endregion

        #region Metodos

        public TransicionEstadoType CargarPorId(string id)
        {
            _transicionEstadoData.FiltrarPorId(id);

            return _transicionEstadoData.Cargar();
        }

        public void Grabar(TransicionEstadoType transicionEstado)
        {
            _transicionEstadoData.Grabar(transicionEstado);
        }

        public void Eliminar(TransicionEstadoType transicionEstado)
        {
            using (TransactionScope transaccion = new TransactionScope())
            {
                _transicionEstadoData.Eliminar(transicionEstado.PermisoRolId, transicionEstado.EstadoOrigenId, transicionEstado.EstadoDestinoId);

                transaccion.Complete();
            }

            
        }

        public void EliminarPorPermisoRolId(string permisoRolId)
        {
            _transicionEstadoData.EliminarPorPermisoRolId(permisoRolId);
        }

        public List<TransicionEstadoType> CargarExplorador(string permisoRolId,string estadoOrigenId,string estadoDestinoId)
        {
            if(permisoRolId != "") _transicionEstadoData.FiltrarPorPermisoRolId(permisoRolId);
            if(estadoOrigenId != "") _transicionEstadoData.FiltrarPorEstadoOrigenId(estadoOrigenId);
            if(estadoDestinoId != "") _transicionEstadoData.FiltrarPorEstadoDestinoId(estadoDestinoId);

            return _transicionEstadoData.CargarListaVista();
        }

        public List<TransicionEstadoType> CargarPorPermisoRolId(string permisoRolId)
        {
            _transicionEstadoData.FiltrarPorPermisoRolId(permisoRolId);

            return _transicionEstadoData.CargarLista();
        }

        public List<TransicionEstadoType> CargarPorRolId(string rolId)
        {
            _transicionEstadoData.FiltrarPorRolId(rolId);

            return _transicionEstadoData.CargarLista();
        }

        #endregion
    }
}
